package program;

/**
 * 判断素数
 *
 * @author luxx
 * @date 2018/4/27 0027
 */
public class PrimeNumber {

    static boolean isPrimeNumber(int num) {

        //2特殊处理
        if (num == 2) {
            return true;
        }
        //识别小于2的数和偶数
        if (num < 2 || num % 2 == 0) {
            return false;
        }
        //识别被奇数整除
        //因为如果一个数不是素数是合数，那么一定可以由两个自然数相乘得到，其中一个大于或等于它的平方根，一个小于或等于它的平方根。并且成对出现。
        for (int i = 3; i <= Math.sqrt(num); i += 2) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        System.out.println(isPrimeNumber(1));
        System.out.println(isPrimeNumber(2));
        System.out.println(isPrimeNumber(3));
        System.out.println(isPrimeNumber(8));
        System.out.println(isPrimeNumber(11));
        System.out.println(isPrimeNumber(37));
        System.out.println(Math.sqrt(37));
    }
}
